System and Method for Creating and Streaming Augmented Game Sessions

ABSTRACT

An approach is provided for streaming of media streams (e.g., from a game console). In one implementation, a media stream that includes a secondary view of the game world may be generated at the game console. The secondary view may be of a lower-quality version of a primary view of the game world. The generation of the media stream may include: prefetching, to a cache of the game console, portions of the primary view and/or instructions for encoding the portions; and encoding, based on the prefetching, the portions to produce the secondary view. In another implementation, game play information may be executed to reproduce previous game play of a previous game session during a reproduction of the previous game session. Augmentation content may be added to the reproduced game session during the reproduction of the previous game session, creating an augmented game session having one or more views for streaming.

CROSS REFERENCE

The present application is a divisional application of U.S. patentapplication Ser. No. 13/731,661, entitled “System and Method forCreating and Streaming Augmented Game Sessions” and filed on Dec. 31,2012, which is herein incorporated by reference in its entirety.

FIELD OF THE INVENTION

The invention relates generally to the streaming of media streams, forexample, from a game console. The media streams may, for instance, be oflive game sessions, augmented game sessions created via augmentationduring reproduction of previous game sessions, and/or other gamesessions.

BACKGROUND OF THE INVENTION

Online gaming has become one of the world's largest forms ofentertainment. In recent years, live streaming of competitive gaming hasbecome one of the hottest trends. For example, gamers and their fans maylive stream competitive gaming events to learn new game strategiesutilized by other gamers and/or for entertainment purposes. As such, anumber of service providers have developed services to facilitatestreaming of gaming events (e.g., e-sport events) from desktop computersto streaming service sites for presentation of the streamed gamingevents to viewers around the world. However, gamers are currently unableto live stream their game sessions directly from their game consoles tosuch streaming service sites without the use of an intermediary devicedue to, for example, lower memory and processing capabilities of gameconsoles (e.g., compared to traditional servers and/or desktopcomputers). The inability to live stream from a game console maydiminish the overall game play experience for console users.

Additionally, commentators often provide an additional form ofentertainment in conjunction with streaming of the gaming events. Greatcommentary, for instance, may attract a larger number of viewers togaming events due to the “personalities” of the commentators. However,while a commentator may add his/her audio or visual commentary to arecorded game-session video (e.g., by combining a video of thecommentary and a captured video of the game session), the commentator islimited to seeing only the views of the game session that have beencaptured by the video of the game session. Accordingly, alternativeapproaches to typical streaming of game sessions and/or commentation maybe advantageous.

SUMMARY OF THE INVENTION

One aspect of the invention relates to a system that is configured tofacilitate streaming of media streams from a game console, in accordancewith one or more implementations. Another aspect of the inventionrelates a system that is configured to facilitate streaming of augmentedgame sessions created via augmentation during reproduction of previousgame sessions.

The various components of such system(s) may be configured forelectronic communication among one another. Such communication may beaccomplished via one or more networks, one or more direct connections,one or more wireless connections, one or more wired connections, and/orother electronic communication media. One or more of the components ofthe system may be implemented in a server (not shown). The server may bein communication with client computing platforms via a client/serverarchitecture to enable users access to the server via client computingplatforms.

A processor may be configured to provide information processingcapabilities within the system. For example, the processor mayconfigured to execute computer program modules that may include one ormore of a game module, a communication module, an encoding module, avector processing module, a streaming module, an augmentation module, agame play storage module, a number-type conversion module, and/or othermodules. In some implementations, a given client computing platform(e.g., a game console) may include the processor and/or the computerprogram modules to facilitate operations and/or functions describedherein. In other implementations, a server may include the processorand/or the computer program modules to facilitate operations and/orfunctions described herein.

The game module may be configured to execute an instance of a gameworld, for instance, at a game console. The game module may beconfigured to generate, based on the game world, a primary view of thegame world for local viewing. By way of example, the primary view may bea view rendered to a player of the instance of the game world on adisplay that is locally connected to his/her game console. The primaryview may be generated based on interactions among various players of thegame world, interactions of the players with simulated elements of thegame world, simulated events of the game world, augmented elements,and/or other features. The primary view may be rendered based on one ormore media formats (e.g., image format, video format, etc.) to depictthe various interactions, simulated events, augmented elements, and/orother features. The communication module may, for instance, beconfigured to obtain action requests specifying in-game actions. Thegame module may be configured to implement requested actions in theinstance of the game world. As an example, the requested actions maycause one or more simulated events in the instance of the game world,resulting in the generation of a primary view depicting the simulatedevents.

The encoding module may be configured to generate, at the game console,a media stream including a secondary view of the game world. Thesecondary view may be a lower-quality version of the primary view. Byway of example, compared with the primary view, the secondary view maybe associated with one or more of a lower resolution, frame rate, bitrate, and/or other quality factors. It should be noted that, althoughthe secondary view may be a lower-quality version of the primary view,the quality of the primary and secondary views may not necessarily bedistinguishable to viewers.

The encoding module may be configured such that the generation of amedia stream includes: prefetching, to the cache of the game console,one or more of portions of the primary view or instructions for encodingthe portions of the primary view; and encoding, based on theprefetching, the portions of the primary view to produce the secondaryview. For example, due to lower memory and processing capabilities ofgame consoles (e.g., compared with conventional desktops), traditionalencoding approaches may not allow a game console to effectively encodeand stream a current game session during the game session. As such, byprefetching data to the cache of the game console (e.g., L1 cache, L2cache, etc.), and by encoding primary views of the game session usingthe prefetched data, a game console may avoid large latencies associatedwith directly loading the data from main memory to encode the primaryviews. As a result, the game console may be configured to moreeffectively encode and stream a current game session in real-time.

In certain implementations, the encoding module may comprise code thatindicates the prefetching to the cache and the encoding of the portionsof the primary view to produce the secondary view. By way of example,the code may be written such that it indicates prefetching of theprimary view portions and/or the encoding instructions to L1 cache, L2cache, etc., of the gaming console in a way that reduces delaysassociated with cache misses. In some implementations, the one or moreprocessors may include a first processor of a first processor type and asecond processor of a second processor type different from the firstprocessor type, and the code of the encoding module may indicateexecution of a first part of the code using the first processor andexecution of a second part of the code using the second processor.Although certain parts of the code may generally be more suitable forprocessing by a processing unit of a first processing unit type, thecode may indicate processing of those certain parts of the code by aprocessing unit of second processing unit type, for instance, to balancethe utilization of the processing units so that the processing unit ofthe first processing type is not significantly overutilized (e.g., toavoid waiting delays) and the processing unit of the second processingtype is not significantly underutilized (e.g., to avoid waste ofavailable processing power).

In various implementations, the vector processing module may include theencoding module such that the vector processing module may be configuredto initiate the prefetching to the cache and the encoding of theportions of the primary view to produce the secondary view (e.g., toperform vector operations to optimize routines associated with theencoding process). In some implementations, the vector processing modulemay be configured to load, in parallel, one or more of a first portionof the portions or the instructions for encoding the first portion fromthe cache to a first register associated with the vector processingmodule, and one or more of a second portion of the portions or theinstructions for encoding the second portion from the cache to a secondregister associated with the vector processing module, such that theencoding of the portions of the primary view to produce the secondaryview may be based on the loading from the cache to the first and secondregisters. In this way, by loading the first and second registers inparallel, the vector processing module may overcome slower processingspeeds associated with game consoles by reducing loading delays (e.g.,waiting for the loading of a register to be completed).

In certain implementations, portions of the primary view may berepresented by a first set of numbers of a first number type. Thenumber-type conversion module may be configured to convert the first setof numbers into a second set of numbers of a second number type, and theencoding of the portions of the primary view to produce the secondaryview may be based on the conversion. In some implementations, theencoding module may be configured to initiate lookup table functioncalls to retrieve results of certain mathematical operations as a way tomitigate computational load associated with conversion of the first setof numbers to the second set of numbers.

The streaming module may be configured to effectuate streaming of themedia stream (e.g., from the game console to a web server). For example,as a result of the optimizations described herein (e.g., prefetching ofdata to the cache of the game console, encoding of the prefetched dataat the game console, explicit resource utilization balancing, etc.), thegame console may be configured to effectively encode and stream acurrent game session while facilitating operations necessary toeffectuate game play for the game session.

In some implementations, the game module may be configured to obtaingame play information associated with a previous game session of a game.The game play information may define previous game play of the previousgame session. The previous game play may, for instance, include actionsinitiated by players of the previous game session, interactions amonguser characters associated with the players, attributes of the usercharacters, environments of the previous game session (e.g., in whichthe actions were initiated, the user characters interacted with, etc.),and/or other game play.

The game module may be configured to execute the game play informationto reproduce the previous game play during a reproduction of theprevious game session. In some implementations, the game module may beconfigured such that the reproduction of the previous game session mayinclude generating one or more views of the previous game session forpresentation to the user.

In various implementations, the game module may be configured such thatone or more properties of the reproduction of the previous game sessionare controllable by the user during the reproduction of the previousgame session. The one or more properties may include viewpoint,magnification field, inclusion of screen objects (e.g., compass, maps,alerts, etc.), and/or other properties. In this way, the control of theproperties may enable the user to better analyze the previous game play,for instance, to provide better commentary for the previous game playsince the user may be able to adjust the viewpoints along with the focusof the viewpoints to better suit his/her needs.

The augmentation module may be configured to effectuate adding ofaugmentation content to the reproduced game session in response to userinput received from an augmenting user during the reproduction of theprevious game session. The addition of the augmentation content to thereproduced game session may create an augmented game session. Forexample, the user may be a commentator and may activate the reproductionof the previous game session to provide commentary of the previous gameplay in an augmented game session. The user may, for instance, be ableto input requests to jump to any viewpoint (e.g., first-person,third-person, etc.) of any of the players of the previous game sessionto provide commentary based on what is seen through those viewpoints(e.g., the viewpoints of opposing players).

In certain implementations, the game module may be configured togenerate a new view of the previous game session during the reproductionof the previous game session. The augmentation module may be configuredsuch that the augmentation content includes the new view. For example,an augmenting user may input a selection for a new viewpoint unavailableto the players in the previous game session, causing generation of a newview based on the new viewpoint selected by the user. Thus, the user mayprovide commentary for the new view in creating the augmented gamesession (e.g., such that a media stream of the augmented game sessionmay include the new view and the commentary for the new view). In thisway, the user is able to provide viewers of the augmented game sessionwith additional insight into the previous game session along withintriguing new views that would otherwise have been missed by simplywatching typical recorded media streams having commentary.

In some implementations, the augmentation module may be configured tofacilitate selection by an augmenting user of one or more views of theaugmented game session that are streamed from among a plurality of viewsof the augmented game session. The plurality of views of the augmentedgame session may, for instance, include the one or more views of theprevious game session generated during the reproduction, new viewsgenerated during the reproduction, and/or other views associated withthe augmented game session.

The streaming module may be configured to effectuate streaming of theone or more views of the augmented game session. In some implementation,the streaming may include real-time streaming of the one or more viewsof the augmented game session to one or more viewers as the augmentationcontent is added to the reproduced game session. By way of example,although the previous game play initially occurred during the previousgame session, the game play information associated with the previousgame session may be obtained (e.g., downloaded from a web service,loaded from storage at a game console, etc.) and utilized to reproducethe previous game play during a reproduction/augmentation session (e.g.,the reproduced and augmented game sessions). Thus, the streaming of theone or more views of the augmented game session may include live,real-time streaming with respect to the augmented game session.

In various implementations, the augmented game session may include aplurality of players. The plurality of players may include a firstplayer and an augmenting user. The game may include a plurality ofplayer types and a plurality of in-game actions. The plurality of playertypes may include first and second player types. The first player may beof the first player type, and the user may be of the second player type.By way of example, the first player may be a player in the previous gamesession and the augmented game session, while the user may only be aplayer in the augmented game session. In one scenario, with respect tothe augmented game session, the first player may be a simulated playerwhose actions may be predefined (e.g., the actions may be recorded fromthe previous game session in the form of the game play information),while the second player may be a live player whose actions are initiatedduring the augmented game session to facilitate augmenting content tothe reproduced game session.

In certain implementations, the plurality of in-game actions may includefirst actions of the first player type and second actions of the secondplayer type. The first actions of the first player type may be actionsthat are available to players of the first player type (e.g., the firstplayer), while actions of the second type may be actions that areavailable to players of the second player type (e.g., the augmentinguser).

In various implementations, the previous game play may include the firstactions, and the first actions may have been implemented on behalf ofthe first player in the previous game session. For example, the firstactions may have been implemented during the previous game sessionresponsive to action requests for the first actions by the first player,and recorded during the previous game session in the form of the gameplay information. The first actions may be reinitiated during thereproduction of the previous game session using the game playinformation. On the other hand, the second actions may be initiated forthe first time during the reproduction of the previous game session.Thus, in some implementations, the game module may be configured toimplement the second actions for the user during the reproduction of theprevious game session responsive to action requests for the secondactions by the user.

The game play storage module may be configured to generate the game playinformation responsive to implementation of the first actions during theprevious game session. For example, the game play information may begenerated during the previous game session based on actions implementedin the previous game session. The game play information may be stored ata game console, at a web service, etc., to enable future reproduction ofthe previous game session for augmentation purposes.

These and other features, and characteristics of the present technology,as well as the methods of operation and functions of the relatedelements of structure and the combination of parts and economies ofmanufacture, will become more apparent upon consideration of thefollowing description and the appended claims with reference to theaccompanying drawings, all of which form a part of this specification,wherein like reference numerals designate corresponding parts in thevarious figures. It is to be expressly understood, however, that thedrawings are for the purpose of illustration and description only andare not intended as a definition of the limits of the invention. As usedin the specification and in the claims, the singular form of “a”, “an”,and “the” include plural referents unless the context clearly dictatesotherwise.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a system configured to facilitate streaming of mediastreams, in accordance with one or more implementations.

FIG. 2 illustrates a primary view of a game world, in accordance withone or more implementations.

FIGS. 3A and 3B illustrate an augmented game session created duringreproduction of a previous game session, in accordance with one or moreimplementations.

FIG. 4 illustrates a method for facilitating generation of media streamsat a game console, in accordance with one or more implementations.

FIG. 5 illustrates a method for facilitating streaming of augmented gamesessions created via augmentation during reproduction of previous gamesessions, in accordance with one or more implementations.

FIG. 6 illustrates a method for facilitating streaming of augmented gamesessions created via augmentation based on player actions duringreproduction of previous game sessions, in accordance with one or moreimplementations.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 illustrates a system 100 configured to facilitate streaming ofmedia streams, in accordance with one or more implementations. In someimplementations, system 100 may comprise one or more of electronicstorage 102, processor 104, external resources 106, client computingplatforms 108, and/or other components. The various components of system100 may be configured for electronic communication among one another.Such communication may be accomplished via one or more networks, one ormore direct connections, one or more wireless connections, one or morewired connections, and/or other electronic communication media. One ormore of the components of system 100 may be implemented in a server (notshown). The server may be in communication with client computingplatforms 108 via a client/server architecture to enable users access tothe server via client computing platforms 108.

Processor 104 may be configured to provide information processingcapabilities within system 100. For example, processor 104 mayconfigured to execute computer program modules that may include one ormore of a game module 110, a communication module 112, an encodingmodule 114, a vector processing module 116, a streaming module 118, anaugmentation module 120, a game play storage module 122, a number-typeconversion module 124, and/or other modules. In some implementations, agiven client computing platform 108 (e.g., a game console) may includeone or more processors and/or computer program modules that are the sameas or similar to processor 104 and/or the depicted computer programmodules to facilitate operations and/or functions described herein. Inother implementations, a server may include one or more processorsand/or computer program modules that are the same as or similar toprocessor 104 and/or the depicted computer program modules to facilitateoperations and/or functions described herein.

In some implementations, electronic storage 102 may comprisenon-transitory electronic storage media that electronically storesinformation. Electronic storage 102 may include one or both of systemstorage that is provided integrally (e.g., substantially non-removable)with system 100 and/or removable storage that is removably connectableto system 100 via, for example, a port (e.g., a USB port, a firewireport, etc.) or a drive (e.g., a disk drive, etc.). Electronic storage102 may include one or more of optically readable storage media (e.g.,optical disks, etc.), magnetically readable storage media (e.g.,magnetic tape, magnetic hard drive, floppy drive, etc.), electricalcharge-based storage media (e.g., EEPROM, RAM, etc.), solid-statestorage media (e.g., flash drive, etc.), and/or other electronicallyreadable storage media. Electronic storage 102 may include virtualstorage resources, such as storage resources provided via a cloud and/ora virtual private network. Electronic storage 102 may store softwarealgorithms, information determined by processor 104, informationreceived via client computing platforms 108, and/or other informationthat enables system 100 to function properly. Electronic storage 102 maybe a separate component within system 100, or electronic storage 102 maybe provided integrally with one or more other components of system 12(e.g., processor 104, client computing platforms 108, servers of system100, etc.). For example, in certain implementations, the non-transitoryelectronic storage media of electronic storage 102 may include a cache(e.g., L1 cache, L2 cache, etc.) of processor 104.

In some implementations, electronic storage 102, processor 104, externalresources 106, client computing platforms 108, and/or other components(e.g., servers of system 100) may be operatively linked via one or moreelectronic communication links. For example, such electroniccommunication links may be established, at least in part, via a networksuch as the Internet and/or other networks. It will be appreciated thatthis is not intended to be limiting, and that the scope of thisdisclosure includes implementations in which electronic storage 102,processor 104, external resources 106, client computing platforms 108,and/or other components may be operatively linked via some othercommunication media.

In some implementations, the external resources 106 may include sourcesof information, hosts and/or providers of virtual spaces outside ofsystem 100, external entities participating with system 100, and/orother resources. In some implementations, some or all of thefunctionality attributed herein to external resources 106 may beprovided by resources included in system 100.

In some implementations, processor 104 may include one or more of adigital processor, an analog processor, a digital circuit designed toprocess information, an analog circuit designed to process information,a state machine, and/or other mechanisms for electronically processinginformation. Although processor 104 is shown in FIG. 1 as a singleentity, this is for illustrative purposes only. In some implementations,processor 104 may include a plurality of processing units. Theseprocessing units may be physically located within the same device, orprocessor 104 may represent processing functionality of a plurality ofdevices operating in coordination. Processor 104 may be configured toexecute modules 110, 112, 114, 116, 118, 120, 122, 124, and/or othermodules. Processor 104 may be configured to execute modules 110, 112,114, 116, 118, 120, 122, 124, and/or other modules by software;hardware; firmware; some combination of software, hardware, and/orfirmware; and/or other mechanisms for configuring processingcapabilities on processor 104.

It should be appreciated that although modules 110, 112, 114, 116, 118,120, 122, and 124 are illustrated in FIG. 1 as being co-located within asingle processing unit, in implementations in which processor 104includes multiple processing units, one or more of modules 110, 112,114, 116, 118, 120, 122, and/or 124 may be located remotely from theother modules. The description of the functionality provided by thedifferent modules 110, 112, 114, 116, 118, 120, 122, and/or 124described below is for illustrative purposes, and is not intended to belimiting, as any of modules 110, 112, 114, 116, 118, 120, 122, and/or124 may provide more or less functionality than is described. Forexample, one or more of modules 110, 112, 114, 116, 118, 120, 122,and/or 124 may be eliminated, and some or all of its functionality maybe provided by other ones of modules 110, 112, 114, 116, 118, 120, 122,and/or 124. As another example, processor 104 may be configured toexecute one or more additional modules that may perform some or all ofthe functionality attributed below to one of modules 110, 112, 114, 116,118, 120, 122, and/or 124.

Game module 110 may be configured to execute an instance of a gameworld, for instance, at a game console. Game module 110 may beconfigured to generate, based on the game world, a primary view of thegame world for local viewing. By way of example, the primary view may bea view rendered to a player of the instance of the game world on adisplay locally connected to his/her game console. The primary view maybe generated based on interactions among various players of the gameworld, interactions of the players with simulated elements of the gameworld, simulated events of the game world, augmented elements, and/orother features. The primary view may be rendered based on one or moremedia formats (e.g., image format, video format, etc.) to depict thevarious interactions, simulated events, augmented elements, and/or otherfeatures. Communication module 112 may, for instance, be configured toobtain action requests specifying in-game actions. Game module 110 maybe configured to implement requested actions in the instance of the gameworld. The requested actions may cause one or more simulated events inthe instance of the game world, resulting in the generation of a primaryview depicting the simulated events.

For example, FIG. 2 illustrates a primary view 200 of a game world, inaccordance with one or more implementations. As shown, primary view 200depicts user characters representing players 202 a, 202 b, and 202 c,simulated events 204 (e.g., gunshots being fired), and simulatedelements 206 (e.g., cliffs, rocks, chains, buildings, etc.) associatedwith the environment of the game world, among other features. Players202 may, for instance, interact with one another through their usercharacters of the game world to complete missions, to engage in combat,and/or perform other tasks. Players 202 may input action requestsspecifying in-game actions, such as moving around in the game world,changing viewpoints of their user characters, discharging bullets fromtheir guns, etc. These in-game actions may, for instance, cause one ormore simulated events (e.g., simulated events 204), such as gunshotsbeing fired, explosions, death of a user character of a player 202,etc., to be rendered as part of primary view 200 along with the usercharacters, simulated elements 206, and/or other features.

The game world may, for instance, be a virtual space. An instance of thevirtual space may be executed by computer modules to determine views ofthe virtual space. The views may then be communicated (e.g., viastreaming, via object/position data, and/or other information) fromserver(s) and/or other sources to client computing platform(s) 108 forpresentation to users. The view determined and transmitted to a givenclient computing platform 108 may correspond to a user character beingcontrolled by a user via given client computing platform 108. The viewdetermined and transmitted to a given client computing platform 108 maycorrespond to a location in the virtual space (e.g., the location fromwhich the view is taken, the location the view depicts, and/or otherlocations), a zoom ratio, a dimensionality of objects, a point-of-view,and/or view parameters. One or more of the view parameters may beselectable by the user.

The instance of the virtual space may comprise a simulated space that isaccessible by users via clients (e.g., client computing platforms 108)that present the views of the virtual space to a user. The simulatedspace may have a topography, express ongoing real-time interaction byone or more users, and/or include one or more objects positioned withinthe topography that are capable of locomotion within the topography. Insome instances, the topography may comprise a 2-dimensional topography.In other instances, the topography may comprise a 3-dimensionaltopography. The topography may include dimensions of the space, and/orsurface features of a surface or objects that are “native” to the space.In some instances, the topography may describe a surface (e.g., a groundsurface) that runs through at least a substantial portion of the space.In some instances, the topography may describe a volume with one or morebodies positioned therein (e.g., a simulation of gravity-deprived spacewith one or more celestial bodies positioned therein). The instanceexecuted by the computer modules may be synchronous, asynchronous,and/or semi-synchronous.

The above description of the manner in which views of the virtual spaceare provided is not intended to be limiting. The virtual space may beexpressed in a more limited, or more rich, manner. For example, viewsdetermined for the virtual space may be selected from a limited set ofgraphics depicting an event in a given place within the virtual space.The views may include additional content (e.g., text, audio, pre-storedvideo content, and/or other content) that describes particulars of thecurrent state of the place, beyond the relatively generic graphics. Forexample, a view may include a generic battle graphic with a textualdescription of the opponents to be confronted. Other expressions ofindividual places within the virtual space are contemplated.

Within the instance(s) of the virtual space, users may controlcharacters, objects, simulated physical phenomena (e.g., wind, rain,earthquakes, and/or other phenomena), and/or other elements within thevirtual space to interact with the virtual space and/or one another. Theuser characters may include avatars. As used herein, the term “usercharacter” may refer to an object (or group of objects) present in thevirtual space that represents an individual user. The user character maybe controlled by the user with which it is associated. The usercontrolled element(s) may move through and interact with the virtualspace (e.g., non-user characters in the virtual space, other objects inthe virtual space). The user controlled elements controlled by and/orassociated with a given user may be created and/or customized by thegiven user. The user may have an “inventory” of virtual goods and/orcurrency that the user can use (e.g., by manipulation of a usercharacter or other user controlled element, and/or other items) withinthe virtual space.

The users may participate in the instance of the virtual space bycontrolling one or more of the available user controlled elements in thevirtual space. Control may be exercised through control inputs and/orcommands input by the users through client computing platforms 108. Theusers may interact with one another through communications exchangedwithin the virtual space. Such communications may include one or more oftextual chat, instant messages, private messages, voice communications,and/or other communications. Communications may be received and enteredby the users via their respective client computing platforms 108.Communications may be routed to and from the appropriate users throughserver(s).

Encoding module 114 may be configured to generate, at a game console, amedia stream including a secondary view of the game world. The secondaryview may be a lower-quality version of the primary view. By way ofexample, compared with the primary view, the secondary view may beassociated with one or more of a lower resolution, frame rate, bit rate,and/or other quality factors. In one scenario, the secondary view may beassociated with a higher frame rate than the primary view, but may beassociated with a lower resolution and a lower bit rate. In anotherscenario, requirements for secondary views of the game world in themedia stream may be between 15-30 frames per second, 320-640 pixelswide, and a bit rate of 1024 kilobits per second or less. On the otherhand, requirements for primary views of the game world may be 15-30frames per second, high-definition resolutions (e.g., 720p, 1080p,etc.), and 2048 kilobits per second or more. It should be noted that,although the secondary view may be a lower-quality version of theprimary view, the quality of the primary and secondary views may notnecessarily be distinguishable to viewers. For instance, with respect toFIG. 2, while the secondary view may be a lower-quality version ofprimary view 200, the lower quality may not necessarily be noticed byviewers of the media stream containing the secondary view.

Encoding module 114 may be configured such that the generation of amedia stream includes: prefetching, to the cache of the game console,one or more of portions of the primary view or instructions for encodingthe portions of the primary view; and encoding, based on theprefetching, the portions of the primary view to produce the secondaryview. For example, due to lower memory and processing capabilities ofgame consoles (e.g., compared with conventional desktops), traditionalencoding approaches may not allow a game console to effectively encodeand stream a current game session during the game session. As such, byprefetching data to the cache of the game console (e.g., L1 cache, L2cache, etc.), and by encoding primary views of the game session usingthe prefetched data, a game console may avoid large latencies associatedwith directly loading the data from main memory to encode the primaryviews. As a result, the game console may be configured to moreeffectively encode and stream a current game session in real-time. Inthis way, users may effectively stream their current game sessions fromtheir respective game consoles as they play in the game sessions.

In certain implementations, encoding module 114 may comprise code thatindicates the prefetching to the cache and the encoding of the portionsof the primary view to produce the secondary view. By way of example,the code may be written such that it indicates prefetching of theprimary view portions and/or the encoding instructions to L1 cache, L2cache, etc., of the gaming console in a way that reduces delaysassociated with cache misses. In one scenario, prefetching may beperformed based on cache miss predictions such that data predicted toincur a cache miss may be prefetched to cache before that data isneeded. In another scenario, certain lines of code may be groupedtogether to optimize the prefetching/encoding process (e.g., based oncalculated frequency of use associated with the primary view portionsand/or the encoding instructions).

In some implementations, the one or more processors may include a firstprocessor of a first processor type and a second processor of a secondprocessor type different from the first processor type, and the code ofencoding module 114 may indicate execution of a first part of the codeusing the first processor and execution of a second part of the codeusing the second processor. For example, a PS3™ (PlayStation® 3) gameconsole may multiple processing units of various types, such as a VMX(Vector Multimedia Extension), a SPU (Synergistic Processor Unit), a PPU(Physics Processing Unit), and/or other processing units. Althoughcertain parts of the code may generally be more suitable for processingby a processing unit of a first processing unit type (e.g., PPU), thecode may indicate processing of those certain parts of the code by aprocessing unit of second processing unit type (e.g., SPU), forinstance, to balance the utilization of the processing units so that theprocessing unit of the first processing type is not significantlyoverutilized (e.g., to avoid waiting delays) and the processing unit ofthe second processing type is not significantly underutilized (e.g., toavoid waste of available processing power).

In certain implementations, the code may indicate direct memory access(DMA) transfers of the primary view portions and/or the encodinginstructions to local memory (e.g., the cache, designated area of memoryfor threads, etc.). For example, game consoles such as the PS3 mayinclude a specialized processing unit (e.g., SPU) that requires thatdata be stored in local memory prior to processing of the data by thespecialized processing unit.

In various implementations, vector processing module 116 may includeencoding module 114 such that vector processing module 116 may beconfigured to initiate the prefetching to the cache and the encoding ofthe portions of the primary view to produce the secondary view. In oneuse case, vector processing module 116 may interact with the VMX of thegaming console to perform vector operations to optimize routinesassociated with the encoding process. In some implementations, vectorprocessing module 116 may be configured to load, in parallel, one ormore of a first portion of the portions or the instructions for encodingthe first portion from the cache to a first register associated withvector processing module 116, and one or more of a second portion of theportions or the instructions for encoding the second portion from thecache to a second register associated with vector processing module 116,such that the encoding of the portions of the primary view to producethe secondary view may be based on the loading from the cache to thefirst and second registers. In this way, by loading the first and secondregisters in parallel, vector processing module 116 may overcome slowerprocessing speeds associated with game consoles by reducing loadingdelays (e.g., waiting for the loading of a register to be completed).

In certain implementations, portions of the primary view may berepresented by a first set of numbers of a first number type.Number-type conversion module 124 may be configured to convert the firstset of numbers into a second set of numbers of a second number type, andthe encoding of the portions of the primary view to produce thesecondary view may be based on the conversion. For example, the VMX ofthe Xbox 360® game console is configured to perform directmultiplication of floats, but is not configured to perform directmultiplication of integers due to a lack of integer multiplies. Thus, insuch a scenario, encoding module 114 may work with the number-typeconversion module to convert integers into floats when multiplication isneeded for encoding. In some implementations, encoding module 114 may beconfigured to initiate lookup table function calls to get around thelack of integer multiplies (and/or other missing mathematicaloperations). For example, encoding module 114 may be configured topre-compute one or more multiplications and store the pre-computedresults in an array. At runtime, encoding module 114 may be configuredwith the pre-computed results such that the array may be “looked up” viathe lookup table function calls (e.g., of encoding module 114) toretrieve the pre-computed results for certain multiplications during theencoding process. In this way, computational load associated withconversion of the integers to floats for multiplications (and/or othermathematical operations) may be mitigated.

Streaming module 118 may be configured to effectuate streaming of themedia stream (e.g., from the game console to a web server). For example,as a result of the optimizations described herein (e.g., prefetching ofdata to the cache of the game console, encoding of the prefetched dataat the game console, explicit resource utilization balancing, etc.), thegame console may be configured to effectively encode and stream acurrent game session while facilitating operations necessary toeffectuate game play for the game session.

In some implementations, game module 110 may be configured to obtaingame play information associated with a previous game session of a game.The game play information may define previous game play of the previousgame session. The previous game play may, for instance, include actionsinitiated by players of the previous game session, interactions amonguser characters associated with the players, attributes of the usercharacters, environments of the previous game session (e.g., in whichthe actions were initiated, in which the user characters interacted,etc.), and/or other game play. For example, with respect to FIG. 2,assuming that primary view 200 represents a captured view of previousgame play, the game play information may specify the movement of usercharacters of players 202, the triggering of the weapons of usercharacters of players 202, etc., along with the environment in which theactions took place, the sequence of the actions, and/or otherinformation relating to the previous game play.

Game module 110 may be configured to execute the game play informationto reproduce the previous game play during a reproduction of theprevious game session. For example, the previous game play may bereproduced by reinitiating the actions defined in the game playinformation in their respective sequence order within the context of theenvironment in which the actions took place. In some implementations,game module 110 may be configured such that the reproduction of theprevious game session may include generating one or more views of theprevious game session for presentation to the user. By way of example,the views of the previous game session may include views that may havebeen presented to the players in the previous game session based on theprevious game play associated with those players (e.g., the actionsinitiated by those players). In one use case, the one or more views ofthe previous game session may be generated and presented to a userfacilitating augmentation of the reproduced game session to enable theuser to see the previous game play as the user is providingaugmentations to the reproduced game session.

In another scenario, the views of the previous game session that arepresented to an augmenting user may be based on selection of the viewsby the user. The user may, for instance, be initially presented with adefault viewpoint of one of the players, and the initial views ofprevious game session may be based on the default viewpoint. However,the user may select to switch to a viewpoint of another player to bepresented with views based on the selected viewpoint.

In various implementations, game module 110 may be configured such thatone or more properties of the reproduction of the previous game sessionare controllable by an augmenting user during the reproduction of theprevious game session. The one or more properties may include viewpoint,magnification field, inclusion of screen objects, and/or otherproperties. As an example, an augmenting user may select the viewpointfrom which the view presented to the user is based (e.g., viewpoints ofplayers in the previous game session, new viewpoints unavailable toplayers in the previous game session, etc.) and the magnification fieldof the selected viewpoint such that the view presented to the user is azoomed-in/zoomed-out view (e.g., a zoomed-in view generated based on afirst-person viewpoint that is zoomed-in on a particular view area, azoomed-out view generated based on a third-person viewpoint that iszoomed-out, etc.). As another example, the views of the previous gamesession may include screen objects (e.g., compass, maps, alerts, etc.)that were accessible to players in the previous game session. The usermay opt to leave out such screen objects from the views presented to theuser such that media streams created from those views will not renderthose screen objects. In this way, the control of the properties mayenable the user to better analyze the previous game play, for instance,to provide better commentary for the previous game play since the usermay be able to adjust the viewpoints along with the focus of theviewpoints to better suit his/her needs.

Augmentation module 120 may be configured to effectuate adding ofaugmentation content to the reproduced game session in response to userinput received from an augmenting user during the reproduction of theprevious game session. The addition of the augmentation content to thereproduced game session may create an augmented game session. In one usecase, an augmenting user may be a commentator and may activate thereproduction of the previous game session to provide commentary of theprevious game play in an augmented game session. The user may, forinstance, be able to input requests to jump to any viewpoint (e.g.,first-person, third-person, etc.) of any of the players of the previousgame session to provide commentary based on what is seen through thoseviewpoints (e.g., the viewpoints of various players). In anotherscenario, the user may add screen objects (e.g., a map displaying thevarious locations of the players, a leaderboard showing the scores ofthe players, a clock/timer, etc.) to the reproduced game session suchthat a media stream of the augmented game session will include arendering of the screen objects.

By way of example, FIGS. 3A and 3B illustrate a media stream of anaugmented game session 300 created during reproduction of a previousgame session, in accordance with one or more implementations. FIGS. 3Aand 3B may, for instance, illustrate streamed views of the augmentedgame session generated based on viewpoints of players on opposing teams(e.g., Teams 1 and 2). In one scenario, with respect to FIG. 3A, acommentating user may facilitate augmentation of the reproduced gamesession during the reproduction of the previous game session. As shown,the user may have been presented with a first view that is generatedbased on the viewpoint of player 202 a as the user augments content tothe reproduced game session to create the augmented game session. Theuser may, for instance, add audio commentary 302 during the reproductionof the previous game session to point out an important aspect of theprevious game play associated with Team 1 such that the media stream ofthe augmented game session will include the audio commentary. To provideviewers with an uncluttered view, the user may opt to remove screenobjects (e.g., compass, maps, alerts, etc.) that may have been presentedto player 202 a in the previous game session, as indicated in FIG. 3A.

In another scenario, as shown in FIG. 3B, an augmenting user may switchto a viewpoint of a player 304 on Team 2 (e.g., the team opposing Team1). As such, the user may be presented with a view generated based onthe viewpoint of player 304 as the user adds augmentation content to thereproduced game session. For example, when an augmenting user realizesthe strategy being implemented by player 304, the user may providehis/her take on that strategy. In some implementations, the user may addaudio and/or visual commentary (e.g., audio commentary 306, visualcommentary in the form of video window 308, etc.) during thereproduction of the previous game session using a microphone and acamera connected to client computing platform 108 (e.g., a gameconsole). The user may opt to include video window 308 depicting theuser in real-time as he/she facilitates augmenting content to thereproduced game session to create the augmented game session. Videowindow 308 may, for instance, enable viewers of the augmented gamesession to see the facial expressions of the user as he/she facilitatesthe augmentation. To add more excitement to the augmented game session,an augmenting user may opt to include a map 310 depicting the currentlocations of the various players and a leaderboard 312 depicting thecurrent scores of the players (e.g., players 202 and 304), such that amedia stream of the augmented game session will include the audiocommentary 306, the video window 308, the map 310, and the leaderboard312.

In certain implementations, game module 110 may be configured togenerate a new view of the previous game session during the reproductionof the previous game session. Augmentation module 120 may be configuredsuch that the augmentation content includes the new view. For example,an augmenting user may input a selection for a new viewpoint unavailableto the players in the previous game session, causing generation of a newview based on the new viewpoint selected by the user. Thus, the user mayprovide commentary for the new view in creating the augmented gamesession (e.g., such that a media stream of the augmented game sessionmay include the new view and the commentary for the new view).

In a first scenario, a user may opt for an aerial viewpoint that causesthe generation of a new view based on the new outlook from the sky. In asecond scenario, the user may opt for a viewpoint with x-ray vision thatenables the user to see through solid objects (e.g., walls, rocks, etc.)with perfect clarity. The user may, for instance, utilize a two-fingertouch gesture on a touch display rendering the current view to “open-up”a vision hole on a solid object that enables the user to see through thesolid object via the vision hole. In a third scenario, the user may optto act as a player (e.g., a reporter that was not in the previous gamesession, a moving spy robot that was not accessible to the players inthe previous game session, etc.) who may move around in the simulatedspace to have access to viewpoints that the players in the previous gamesession did not have. In this way, a user is able to provide viewers ofthe augmented game session with additional insight into the previousgame session along with intriguing new views that would otherwise havebeen missed by simply watching typical recorded media streams havingcommentary.

In some implementations, augmentation module 120 may be configured tofacilitate selection by an augmenting user of one or more views of theaugmented game session that are streamed from among a plurality of viewsof the augmented game session. The plurality of views of the augmentedgame session may, for instance, include one or more views of theprevious game session generated during the reproduction, new viewsgenerated during the reproduction, and/or other views associated withthe augmented game session. In one use case, augmentation module 120 mayfacilitate the selection by an augmenting user of one or more views ofthe augmented game session by working with game module 110 to enable theuser to control the one or more properties of the reproduction of theprevious game session, such as being able to switch viewpoints (e.g.,viewpoints available to the players in the previous game session,viewpoints unavailable to the players in the previous game session,etc.), provide magnifications of the viewpoints, and manageinclusion/omission of screen objects that were accessible to the playersin the previous game session for views (e.g., resulting in new views).

In various implementations, augmentation module 120 may be configuredsuch that one of the views of the augmented game session may includemultiple views associated with the previous game session. For example,during the reproduction of the previous game session, the user mayinitially be providing commentary on a first view that is generatedbased on a viewpoint of a player in the previous game session. However,to make streaming of the augmented game session more interesting, theuser may add a second view that is generated based on a viewpoint of anopposing player in the previous game session such that a single viewassociated with the augmented game session may include both the firstand second views depicting viewpoints of opposing players. The first andsecond views may, for instance, be cropped, resized, and/or reshaped tofit within the single view associated with the augmented game session.

Streaming module 118 may be configured to effectuate streaming of one ormore views of the augmented game session. In some implementation, thestreaming may include real-time streaming of the one or more views ofthe augmented game session to one or more viewers as the augmentationcontent is added to the reproduced game session. By way of example,although the previous game play initially occurred during the previousgame session, the game play information associated with the previousgame session may be obtained (e.g., downloaded from a web service,loaded from storage at a game console, etc.) and utilized to reproducethe previous game play during a reproduction/augmentation session (e.g.,the reproduced and augmented game sessions). Thus, the streaming of theone or more views of the augmented game session may include live,real-time streaming with respect to the augmented game session.

In various implementations, the augmented game session may include aplurality of players. The plurality of players may include a firstplayer and an augmenting user. The game may include a plurality ofplayer types and a plurality of in-game actions. The plurality of playertypes may include first and second player types. The first player may beof the first player type, and the user may be of the second player type.By way of example, the first player may be a player in the previous gamesession and the augmented game session, while the user may only be aplayer in the augmented game session. In one scenario, with respect tothe augmented game session, the first player may be a simulated playerwhose actions may be predefined (e.g., the actions may be recorded fromthe previous game session in the form of the game play information),while the second player may be a live player whose actions are initiatedduring the augmented game session to facilitate augmenting content tothe reproduced game session.

In another scenario, players of the first player type may be limited totheir respective viewpoints. For example, in the previous game session,the players of the first player type may only see what their respectiveuser character sees through a first-person viewpoint and/or theimmediate area around their respective user character through athird-person viewpoint. On the other hand, players of the second playertype may have access to their own viewpoints as well as the viewpointsof all of the players in the previous game session. For instance, duringthe reproduction of the previous game session, the user (e.g., being ofthe second player type) may have the ability to see all interactionstaking place among the players in the game world (e.g., aerial viewpointof the game world, god-like view of the game world, etc.), along withhaving access to the individual viewpoints of each of the players in thegame world (e.g., first-person viewpoint of the players, third-personviewpoint of the players, etc.).

In certain implementations, the plurality of in-game actions may includefirst actions of the first player type and second actions of the secondplayer type. The first actions of the first player type may be actionsthat are available to players of the first player type (e.g., the firstplayer), while actions of the second type may be actions that areavailable to players of the second player type (e.g., the user). In oneuse case, the second actions may include activating x-ray vision to seethrough solid objects (e.g., walls, rocks, etc.), transitioning into thebodies of various user characters associated with other players to seewhat is happening from their viewpoints, instantly accessing viewpointsfrom any location in the simulated space to obtain “looks” that may havebeen unavailable to players in the previous game session, and/or otheractions of the second player type. Such actions may, for instance, beunavailable to the first player and/or other players of the first playertype.

As indicated, in various implementations, the previous game play mayinclude the first actions, and the first actions may have beenimplemented on behalf of the first player in the previous game session.For example, the first actions may have been implemented during theprevious game session responsive to action requests for the firstactions by the first player, and recorded during the previous gamesession in the form of the game play information. The first actions maybe reinitiated during the reproduction of the previous game sessionusing the game play information. On the other hand, the second actionsmay be initiated for the first time during the reproduction of theprevious game session. Thus, in some implementations, game module 110may be configured to implement the second actions for the user duringthe reproduction of the previous game session responsive to actionrequests for the second actions by the user.

Game play storage module 122 may be configured to generate the game playinformation responsive to implementation of the first actions during theprevious game session. For example, the game play information may begenerated during the previous game session based on actions implementedin the previous game session. The game play information may be stored ata game console, at a web service, etc., to enable future reproduction ofthe previous game session for augmentation purposes (e.g., creating anaugmented game session by adding augmentation content to the reproducedgame session during the reproduction of the previous game session). Thegame play information may, for instance, be generated and stored usingone or more languages suitable for recording game play information, suchas Extensible Markup Language (XML) and/or other suitable languages.

FIG. 4 illustrates a method for facilitating generation of media streamsat a game console, in accordance with one or more implementations. Theoperations of method 400 presented below are intended to beillustrative. In some implementations, method 400 may be accomplishedwith one or more additional operations not described, and/or without oneor more of the operations discussed. Additionally, the order in whichthe operations of method 400 are illustrated in FIG. 4 and describedbelow is not intended to be limiting.

In some implementations, method 400 may be implemented in one or moreprocessing devices (e.g., a digital processor, an analog processor, adigital circuit designed to process information, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information). The one or moreprocessing devices may include one or more devices executing some or allof the operations of method 400 in response to instructions storedelectronically on an electronic storage medium. The one or moreprocessing devices may include one or more devices configured throughhardware, firmware, and/or software to be specifically designed forexecution of one or more of the operations of method 400.

In an operation 402, an instance of a game world may be executed. Forexample, the instance of the game world may be executed at a gameconsole. Operation 402 may be performed by a game module that is thesame as or similar to game module 110, in accordance with one or moreimplementations.

In an operation 404, a primary view of the game world may be generatedbased on the game world for local viewing. For example, the primary viewmay be the view rendered to a player of the instance of the game worldon his/her display locally connected to his/her game consoles. Theprimary view may be generated based on interactions among variousplayers of the game world, interactions of the players with simulatedelements of the game world, simulated events of the game world,augmented elements, and/or other features. The primary view may renderedbased on one or more media formats (e.g., image format, video format,etc.) to depict the various interactions, simulated events, augmentedelements, and/or other features. Operation 404 may be performed by agame module that is the same as or similar to game module 110, inaccordance with one or more implementations.

In an operation 406, action requests specifying in-game actions may beobtained. Both players and augmenting users (e.g., who may also beplayers) may, for instance, input the action requests via theirrespective game consoles to interact with one another, to travel aroundthe game world having one or more simulated elements, to completeobjectives in the game world, and/or to perform other activitiesassociated with the game world. Operation 406 may be performed by acommunication module that is the same as or similar to communicationmodule 112, in accordance with one or more implementations.

In an operation 408, the requested actions may be implemented in theinstance of the game world. For example, when implemented, the requestedactions may cause one or more simulated events in the instance of thegame world, resulting in the generation of the primary view depictingthe simulated events. Operation 408 may be performed by a game modulethat is the same as or similar to game module 110, in accordance withone or more implementations.

In an operation 410, a media stream including a secondary view of thegame world may be generated at the game console. The secondary view ofthe game world may be a lower-quality version of the primary view. Byway of example, the generation of the secondary view may include: aprefetching, to the cache (e.g., L1 cache, L2 cache, etc.) of the gameconsole, one or more of portions of the primary view or instructions forencoding the portions of the primary view; an encoding, based on theprefetching, of the portions of the primary view to produce thesecondary view. For example, the portions of the primary view may beencoded using prefetched-cached portions of the primary view andprefetched-cached encoding instructions to produce the secondary view.Operation 410 may be performed by an encoding module that is the same asor similar to encoding module 114, in accordance with one or moreimplementations.

It should be noted that, in some implementations, the encoding module(which is the same as or similar to encoding module 114) may beconfigured to include code that indicates the prefetching to the cacheand the encoding of the portions of the primary view to produce thesecondary view. In other implementations, processors 104 may include afirst processor of a first type and a second processor of a second type.The code may indicate execution of a first part of the code using thefirst processor and execution of a second part of the code using thesecond processor.

In certain implementations, operation 410 may be performed by a vectorprocessing module that is the same as or similar to vector processingmodule 116 such that the vector processing module may initiate theprefetching to the cache and the encoding of the portions of the primaryview to produce the secondary view. In some implementations, the vectorprocessing module may be configured to load, in parallel: (1) one ormore of a first portion of the portions or the instructions for encodingthe first portion; and (2) one or more of a second portion of theportions or the instructions for encoding the second portion, from thecache to a register associated with the vector processing module suchthat the encoding of the portions of the primary view to produce thesecondary view is based on the loading from the cache to the register.

In an operation 412, streaming of the media stream may be effectuated.The media stream may, for instance, be streamed from the game console toone or more viewers via a web service. Operation 412 may be performed bya streaming module that is the same as or similar to streaming module118, in accordance with one or more implementations.

FIG. 5 illustrates a method for facilitating streaming of augmented gamesessions created via augmentation during reproduction of previous gamesessions, in accordance with one or more implementations. The operationsof method 500 presented below are intended to be illustrative. In someimplementations, method 500 may be accomplished with one or moreadditional operations not described, and/or without one or more of theoperations discussed. Additionally, the order in which the operations ofmethod 500 are illustrated in FIG. 5 and described below is not intendedto be limiting.

In some implementations, method 500 may be implemented in one or moreprocessing devices (e.g., a digital processor, an analog processor, adigital circuit designed to process information, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information). The one or moreprocessing devices may include one or more devices executing some or allof the operations of method 500 in response to instructions storedelectronically on an electronic storage medium. The one or moreprocessing devices may include one or more devices configured throughhardware, firmware, and/or software to be specifically designed forexecution of one or more of the operations of method 500.

In an operation 502, game play information associated with a previousgame session of a game may be obtained. The game play information maydefine previous game play of the previous game session. As indicated,the previous game play may include actions initiated by players of theprevious game session, interactions among user characters associatedwith the players, attributes of the user characters, environments of theprevious game session (e.g., in which the actions were initiated, theuser characters interacted with, etc.), and/or other game play.Operation 502 may be performed by a game module that is the same as orsimilar to game module 110, in accordance with one or moreimplementations.

In an operation 504, the game play information may be executed toreproduce the previous game play in the previous game session during areproduction of the previous game session. For example, the previousgame play may be reproduced by reinitiating the actions defined in thegame play information in their respective sequence order within thecontext of the environment in which the actions took place. Operation504 may be performed by a game module that is the same as or similar togame module 110, in accordance with one or more implementations.

In an operation 506, a determination of whether user input is receivedfrom an augmenting user during the reproduction of the previous gamesession may be effectuated. The user input may, for instance, relate toadding of augmentation content to the reproduced game session, such asinputting audio/visual commentary, adding one or more screen objects(e.g., maps, leaderboards, clocks/timers, etc.), adding new views thatmay not have been available for presentation to the players in theprevious game session, and/or other user inputs. Operation 506 may beperformed by a communication module that is the same as or similar tocommunication module 112, in accordance with one or moreimplementations. Responsive to a determination that user input isreceived from the user during the reproduction of the previous gamesession, method 500 may proceed to an operation 508.

In operation 508, augmentation content may be added to the reproducedgame session based on the user input to create augmented game session.In some implementations, selection by the user of one or more views ofthe augmented game session that are to be streamed may be facilitated.The selection by the user may be from among a plurality of views of theaugmented game session. The plurality of views of the augmented gamesession may, for instance, include generated views of the previous gamesession, new views generated during the reproduction of the previousgame session, and/or other views associated with the augmented gamesession. Operation 508 may be performed by an augmentation module thatis the same as or similar to augmentation module 120, in accordance withone or more implementations.

In an operation 510, streaming of the one or more views of the augmentedgame session (e.g., the views selected by the user) may be effectuated.For example, if the reproduction of the game session is performed on agame console, the streaming of the one or more views of the augmentedgames session may be from the game console to a web server (e.g., fordistribution to one or more viewers from the web server). In someimplementations, the streaming may include real-time streaming of theone or more views of the augmented game session to one or more viewersas the augmented content is added to the reproduced game session.Operation 510 may be performed by a streaming module that is the same asor similar to streaming module 118, in accordance with one or moreimplementations.

FIG. 6 illustrates a method for facilitating streaming of augmented gamesessions created via augmentation based on player actions duringreproduction of previous game sessions, in accordance with one or moreimplementations. The operations of method 600 presented below areintended to be illustrative. In some implementations, method 600 may beaccomplished with one or more additional operations not described,and/or without one or more of the operations discussed. Additionally,the order in which the operations of method 600 are illustrated in FIG.6 and described below is not intended to be limiting.

In some implementations, method 600 may be implemented in one or moreprocessing devices (e.g., a digital processor, an analog processor, adigital circuit designed to process information, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information). The one or moreprocessing devices may include one or more devices executing some or allof the operations of method 600 in response to instructions storedelectronically on an electronic storage medium. The one or moreprocessing devices may include one or more devices configured throughhardware, firmware, and/or software to be specifically designed forexecution of one or more of the operations of method 600.

By way of example, the augmented game session may include a plurality ofplayers. The plurality of players may include a first player and anaugmenting user. The first player may, for instance, be a player in theprevious game session and the augmented game session, while the user mayonly be a player in the augmented game session. The first player may beof a first player type, and the user may be of a second player type. Inone scenario, with respect to the augmented game session, the firstplayer may be a simulated player whose actions may be predefined (e.g.,the actions may be recorded from the previous game session in the formof the game play information), while the second player may be a liveplayer whose actions are initiated during the augmented game session tofacilitate augmenting content to the reproduced game session.

In an operation 602, first actions of the first player type may beimplemented during the previous game session on behalf of the firstplayer. For example, the first actions may have been implemented duringthe previous game session responsive to action requests for the firstactions by the first player. The first actions of the first player typemay be actions that are available to players of the first player type(e.g., viewpoint-related actions of such players may be limited to theirrespective first-person and/or third-person viewpoints). Operation 602may be performed by a game module that is the same as or similar to gamemodule 110, in accordance with one or more implementations.

In an operation 604, game play information associated with the previousgame session may be generated. For example, the game play informationmay be generated during the previous game session based on actionsimplemented in the previous game session (e.g., the first actions of thefirst player type). The game play information may be stored at a gameconsole, at a web service, etc., to enable future reproduction of theprevious game session for augmentation purposes. Operation 604 may beperformed by a game play storage module that is the same as or similarto game play storage module 122, in accordance with one or moreimplementations.

In an operation 606, one or more views of the previous game session maybe generated for presentation to the user during the reproduction of theprevious game session (e.g., using the game play information). Forexample, the views of the previous game session may be based on therespective viewpoints of the players in the previous game session alongwith the respective first actions of the players that were implementedin the previous game session (e.g., changing of the viewpoints, engagingin combat, moving around in the game world, etc.). The views of theprevious game session may be generated during the reproduction of theprevious game session to enable the user to select and switch to any ofthe views of the previous game session that the user wishes to includein a live media stream (e.g., real-time streaming with respect to theaugmented game session), while the user adds his/her own audio and/orvisual commentary to the selected views during the reproduction of theprevious game session. The augmentation of the audio/visual commentaryand the selected views may, for instance, result in generating of one ormore views of the augmented game session. Operation 606 may be performedby a game module that is the same as or similar to game module 110, inaccordance with one or more implementations.

In an operation 608, a determination of whether second actions of asecond player type is obtained from the user during the reproduction ofthe previous game session. The second actions of the second player typemay be actions that are available to players of the second player type(e.g., viewpoint-related actions of such players may be more expansivethan viewpoint-related actions of players of the first player type).Operation 608 may be performed by a game module that is the same as orsimilar to game module 110, in accordance with one or moreimplementations. Responsive to a determination that second actions isobtained from the user during the reproduction of the previous gamesession, method 600 may proceed to an operation 610.

In operation 610, the second actions may be implemented during thereproduction of the previous game session. For example, the user mayrequest actions to switch among viewpoints of the various players of theprevious game session (e.g., selecting generated views of the previousgame session). As such, the user may be presented with the viewpoints ofthe various players indicated by the requested actions. Operation 610may be performed by a game module that is the same as or similar to gamemodule 110, in accordance with one or more implementations.

In an operation 612, the augmentation content may be added to thereproduced game session based on the second actions to create theaugmented game session. The augmentation content may include new viewsof the previous game session (e.g., views generated based on viewpointsnot available to players in the previous game session during thereproduction based on their predefined actions), audio/visualcommentary, screen objects, and/or other content. Operation 612 may beperformed by an augmentation module that is the same as or similar toaugmentation module 120, in accordance with one or more implementations.

In an operation 614, streaming of one or more views of the augmentedgame session may be effectuated. As indicated, in some scenarios, if thereproduction of the game session is performed on a game console, thestreaming of the one or more views of the augmented games session may befrom the game console to a web server (e.g., for distribution to one ormore viewers from the web server). In some implementations, thestreaming may include real-time streaming of the one or more views ofthe augmented game session to one or more viewers as the augmentedcontent is added to the reproduced game session. Operation 614 may beperformed by a streaming module that is the same as or similar tostreaming module 118, in accordance with one or more implementations.

Although the present technology has been described in detail for thepurpose of illustration based on what is currently considered to be themost practical and preferred implementations, it is to be understoodthat such detail is solely for that purpose and that the technology isnot limited to the disclosed implementations, but, on the contrary, isintended to cover modifications and equivalent arrangements that arewithin the spirit and scope of the appended claims. For example, it isto be understood that the present technology contemplates that, to theextent possible, one or more features of any implementation can becombined with one or more features of any other implementation.

What is claimed is:
 1. A system for facilitating streaming of mediastreams from a game console, the system comprising: non-transientelectronic storage media that store a cache, the game console includingthe non-transient electronic storage media; and one or more processorsconfigured to execute computer program modules, the computer programmodules comprising: a game module configured to execute an instance of agame world, the game module being configured to generate, based on thegame world, a primary view of the game world for local viewing; acommunication module configured to obtain action requests specifyingin-game actions, wherein the game module is configured to implementrequested actions in the instance of the game world; an encoding moduleconfigured to generate, at the game console, a media stream including asecondary view of the game world, wherein the secondary view is alower-quality version of the primary view, the encoding module beingconfigured such that the generation of the media stream includes:prefetching, to the cache, one or more of portions of the primary viewor instructions for encoding the portions of the primary view; andencoding, based on the prefetching, the portions of the primary view toproduce the secondary view; and a streaming module configured toeffectuate streaming of the media stream.
 2. The system of claim 1,wherein the encoding module includes code that indicates the prefetchingto the cache and the encoding to produce the secondary view.
 3. Thesystem of claim 2, wherein the one or more processors include a firstprocessor of a first processor type and a second processor of a secondprocessor type different from the first processor type, and wherein thecode indicates execution of a first part of the code using the firstprocessor and execution of a second part of the code using the secondprocessor.
 4. The system of claim 1, wherein the computer programmodules comprises a vector processing module, the vector processingmodule including the encoding module such that the vector processingmodule is configured to initiate the prefetching to the cache and theencoding to produce the secondary view.
 5. The system of claim 4,wherein the vector processing module is configured to load, in parallel,one or more of a first portion of the portions or the instructions forencoding the first portion from the cache to a first register associatedwith the vector processing module, and one or more of a second portionof the portions or the instructions for encoding the second portion fromthe cache to a second register associated with the vector processingmodule, such that the encoding to produce the secondary view is based onthe loading from the cache to the first and second registers.
 6. Thesystem of claim 1, wherein the portions of the primary view arerepresented by a first set of numbers of a first number type, and thecomputer program modules comprise a number-type conversion moduleconfigured to convert the first set of numbers into a second set ofnumbers of a second number type, and wherein the encoding to produce thesecondary view is based on the conversion.
 7. A method for facilitatingstreaming of media streams from a game console, the method beingimplemented in a computer system that includes one or more processorsexecuting computer program modules, the method comprising: executing aninstance of a game world; generating, based on the game world, a primaryview of the game world for local viewing; obtaining action requestsspecifying in-game actions; implementing requested actions in theinstance of the game world; generate, at the game console havingnon-transient electronic storage media that store a cache, a mediastream including a secondary view of the game world, wherein thesecondary view is of a lower-quality version of the primary view, andwherein the generation of the media stream includes: prefetching, to thecache, one or more of portions of the primary view or instructions forencoding the portions of the primary view; and encoding, based on theprefetching, the portions of the primary view to produce the secondaryview; and effectuating streaming of the media stream.
 8. The method ofclaim 7, wherein an encoding module of the computer program modulesinclude code that indicates the prefetching to the cache and theencoding to produce the secondary view.
 9. The method of claim 8,wherein the one or more processors include a first processor of a firstprocessor type and a second processor of a second processor typedifferent from the first processor type, and wherein the code indicatesexecution of a first part of the code using the first processor andexecution of a second part of the code using the second processor. 10.The method of claim 7, wherein a vector processing module of thecomputer program modules is configured to initiate the prefetching tothe cache and the encoding to produce the secondary view.
 11. The methodof claim 10, further comprising loading, in parallel by the vectorprocessing module, one or more of a first portion of the portions or theinstructions for encoding the first portion, and one or more of a secondportion of the portions or the instructions for encoding the secondportion, from the cache to a register associated with the vectorprocessing module such that the encoding to produce the secondary viewis based on the loading from the cache to the register.
 12. The methodof claim 7, wherein the portions of the primary view are represented bya first set of numbers of a first number type, the method furthercomprising converting the first set of numbers into a second set ofnumbers of a second number type, wherein the encoding to produce thesecondary view is based on the conversion.